//一个线程执行多个下载任务

import java.util.Random;
import java.util.concurrent.CountDownLatch;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * Author: WJW
 * Date: 2024-08-18
 * Time: 23:32
 */


public class ThreadDemo {
    public static void main(String[] args) throws InterruptedException {
        //1.此处构造方法中写10，意思是有10个线程/任务
        CountDownLatch latch = new CountDownLatch(10);

        //创建出10个线程负责下载
        for (int i = 0; i < 10; i++) {
            int id = i;
            Thread t = new Thread(()->{
                Random random = new Random();
                int time = (random.nextInt(5)+1)*1000;//[0,5)
                System.out.println("线程 "+ id +" 开始下载");
                try {
                    Thread.sleep(time);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println("线程 "+ id +" 结束下载");

                //2.告知countDownLatch 执行结束
                latch.countDown();
            });
            t.start();
        }

        //3.通过这个await操作来等待所有任务结束，也就是countDown被调用了10次
        latch.await();
        System.out.println("所有任务都已经完成了");

    }
}
